/* eslint-disable */
/**
 * NProgress修复工具
 * 解决进度条无法关闭的问题
 */
import NProgress from 'nprogress'

// 确保NProgress在页面加载后是关闭状态
document.addEventListener('DOMContentLoaded', () => {
  console.log('[NProgress Fix] 页面加载完成，确保进度条关闭')
  setTimeout(() => {
    NProgress.done()
  }, 500)
})

// 添加定期检查，防止进度条卡住
setInterval(() => {
  if (document.querySelector('#nprogress')) {
    console.log('[NProgress Fix] 检测到可能卡住的进度条，尝试关闭')
    NProgress.done()
  }
}, 3000)

export default {
  install: (/* eslint-disable-next-line no-unused-vars */ app) => {
    console.log('[NProgress Fix] 安装NProgress修复插件')
    // 扩展原始NProgress方法
    const originalStart = NProgress.start
    const originalDone = NProgress.done
    
    // 重写start方法，添加超时保护
    NProgress.start = function() {
      console.log('[NProgress Fix] 进度条开始，添加安全超时')
      originalStart.apply(this, arguments)
      
      // 10秒后自动关闭，防止卡住
      setTimeout(() => {
        if (document.querySelector('#nprogress')) {
          console.log('[NProgress Fix] 进度条超时，强制关闭')
          NProgress.done()
        }
      }, 10000)
    }
    
    // 重写done方法，确保完全关闭
    NProgress.done = function() {
      console.log('[NProgress Fix] 进度条结束')
      originalDone.apply(this, arguments)
      
      // 确保DOM元素被清理
      setTimeout(() => {
        const nprogressElement = document.querySelector('#nprogress')
        if (nprogressElement) {
          console.log('[NProgress Fix] 发现残留的进度条DOM，手动移除')
          nprogressElement.remove()
        }
      }, 100)
    }
  }
} 